package com.cn.wanxi.servlet;

import com.alibaba.fastjson.JSONObject;
import com.cn.wanxi.model.ResultModel;
import com.cn.wanxi.model.UserModel;
import com.cn.wanxi.service.UserService;
import com.cn.wanxi.service.impl.UserServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/login")
public class UserLoginServlet extends HttpServlet {
    /**
     * doGet和doPost的区别？
     *
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//        我们这么拿到前端传递给后台的数据呢？
//        1.得到前端数据
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String code = req.getParameter("code");
        System.out.println(code);
        String sessionCode = (String) req.getSession().getAttribute("vCode");

//       2. 封装对象
        UserModel userModel = new UserModel();
        userModel.setUsername(username);
        userModel.setPassword(password);
        userModel.setCode(code);
        userModel.setSessionCode(sessionCode);

//        3.调用服务逻辑层
        UserService userService = new UserServiceImpl();
//        4.得到逻辑层返回数据
        ResultModel resultModel = userService.login(userModel);
        if (resultModel.getMsg().equals("success")) {
            req.getSession().setAttribute("username", username);
        }
//        req.setAttribute("userModel", userModel);
//        req.getRequestDispatcher("/login.html").forward(req, resp);
//      所以，我们这么将数据给前端呢？ajax，而且必须以json对象进行传递
//        servlet将数据转换为json对象有三种形式
//        因为jdk没有这个功能，那么这个肯定是第三方做好的一个包，
//        1.Gson 谷歌
//        2.fastjson  阿里巴巴
//        3。jackson
//        一般在哪个地方去下载包呢？可能某一个公司会把这些包放在一起供其他人使用

//        5.将数据返回给前端
        resp.getWriter().println(JSONObject.toJSONString(resultModel));
    }
}
